"""
带有参数的装饰器：
    1个装饰器的参数只能有1个
"""
# 需求：定义一个装饰器减法运算，又能装饰加法运算的装饰器

# 写法1，提示错误：TypeError: print_info() missing 1 required positional argument: 'flag'
# def print_info(fn_name, flag):
#     def inner(a, b):
#         if flag == "+":
#             print("【友好提示】正在努力 加法 计算中...")
#         elif flag == "-":
#             print("【友好提示】正在努力 减法 运算中...")
#         fn_name(a, b)
#
#     return inner

# 写法2
# def print_info(fn_name):
#     def inner(a, b):
#         if fn_name.__name__ == "add":
#             print("【友好提示】正在努力 加法 计算中...")
#         elif fn_name.__name__ == "substract":
#             print("【友好提示】正在努力 减法 运算中...")
#         fn_name(a, b)
#
#     return inner
#
# @print_info
# def add(a, b):
#     sum = a + b
#     print(f"【加法运算】结果为：{sum}")

# 写法3
def logging(flag):
    def print_info(fn_name):
        def inner(a, b):
            if flag == "+":
                print("【友好提示】正在努力 加法 计算中...")
            elif flag == "-":
                print("【友好提示】正在努力 减法 运算中...")
            fn_name(a, b)

        return inner

    return print_info
@logging("+")
def add(a, b):
    sum = a + b
    print(f"【加法运算】结果为：{sum}")

@logging("-")
def substract(a, b):
    sum = a - b
    print(f"【减法运算】结果为：{sum}")

if __name__ == '__main__':
    add(10, 20)
    substract(20, 10)
